﻿// Saruman's Army POJ - 3069.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>
#include <algorithm>

using namespace std;
//https://vjudge.csgrandeur.cn/problem/POJ-3069
/*
白袍萨鲁曼必须带领他的军队沿着一条笔直的道路从伊森加德前往赫尔姆深渊。为了追踪他的军队，萨鲁曼在军队中分发被称为 "帕兰特 "的视力石。
每个帕兰特的最大有效射程为 R 单位，必须由军队中的某个部队携带（也就是说，帕兰特不能 "自由漂浮 "在半空中）。
帮助萨鲁曼控制中土世界，确定萨鲁曼所需的最低数量的帕兰特，确保他的每个爪牙都在某个帕兰特的 R 单位范围内。

输入的测试文件将包含多个案例。每个测试用例以一行开始，其中包含一个整数 R，即所有帕兰特尔的最大有效范围（0 ≤ R ≤ 1000），
以及一个整数 n，即萨鲁曼军队的数量（1 ≤ n ≤ 1000）。下一行包含 n 个整数，表示每支部队的位置 x1、......、xn（其中 0 ≤ xi ≤ 1000）。
文件结束处有一个 R = n = -1 的测试用例。
0 3
10 20 20
10 7
70 30 1 7 15 20 50
-1 -1

2
4

在每个测试用例中，打印一个整数，表示所需的最小 帕兰特 数量。

在第一个测试用例中，萨鲁曼可以在 10 和 20 号位置放置一个帕兰特。这里需要注意的是，一个范围为 0 的帕兰特可以覆盖 20 号位置的两支部队。

在第二个测试案例中，萨鲁曼可以在 7 号位置（覆盖 1 号、7 号和 15 号位置的部队）、20 号位置（覆盖 20 号和 30 号位置）、50 号位置和 70 号位置放置帕兰蒂尔。
这里要注意的是，托盘必须分布在部队中，不允许 "自由漂浮"。
因此，萨鲁曼不能在 60 号位置放置一个帕兰蒂尔来覆盖 50 号和 70 号位置的部队。
*/

int r, n;
const int N = 1010;
int arr[N];

const int MINLIMIT = -99999999;

void solve() {
	int ans = 0;
	int llimit = MINLIMIT; int pos = llimit;
	for (int i = 0; i < n; i++) {
		if (MINLIMIT == llimit && pos == MINLIMIT) {
			llimit = arr[i]; pos = llimit;
		}
		else if (arr[i] <= llimit + r) {
			pos = arr[i];
		}
		else if (arr[i] > pos + r) {
			ans++;  llimit = arr[i]; pos = arr[i];
		}
	}
	ans++;
	cout << ans << endl;
	 
}

int main()
{
	while (cin >> r >> n) {
		if (r == -1 && n == -1) break;
		for (int i = 0; i < n; i++) {
			cin >> arr[i];
		}
		sort(arr, arr + n);
		solve();
	}
}

 